
package org.apache.solr.response.transform;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.apache.solr.common.SolrDocument;

/**
 * Transform a document before it gets sent out
 */
public class DocTransformers extends DocTransformer {

    final List<DocTransformer> children = new ArrayList<DocTransformer>();

    @Override
    public String getName() {

        StringBuilder str = new StringBuilder();
        str.append("Transformers[");
        Iterator<DocTransformer> iter = children.iterator();
        while(iter.hasNext()) {
            str.append(iter.next().getName());
            if(iter.hasNext()) {
                str.append(",");
            }
        }
        str.append("]");
        return str.toString();
    }

    public void addTransformer(DocTransformer a) {
        children.add(a);
    }

    public int size() {
        return children.size();
    }

    public DocTransformer getTransformer(int idx) {
        return children.get(idx);
    }

    @Override
    public void setContext(TransformContext context) {
        for(DocTransformer a : children) {
            a.setContext(context);
        }
    }

    @Override
    public void transform(SolrDocument doc, int docid) throws IOException {
        for(DocTransformer a : children) {
            a.transform(doc, docid);
        }
    }
}
